/**
 * 普通业务模块示例
 */
define(['Util',
        '../common/getMenu',
        'list',
        'cookie',
        'form',
        'text!tpl/project/projectList.tpl',
        'dialog',
        'text!tpl/project/tabelList.tpl',
        'select',
        'tab',
        'loading',
        '../common/getPath',
        '../common/getQueryString',
        'date',
        '../common/dateFormat'  
    ],
    function(Util, getMenu, List, $cookie, Form, tpl, Dialog, tabelTpl, Select, Tab, Loading, AjaxPath, GetQueryString, MyDate) {
        require(['style!css/style.css']);

        var $el = null;

        var _indexModule = null,
            list = null,
            tplId = null,
            tab = null,
            handLoading = null,
            loadingConfig = null,
            selectDrop = null,
            isShow = false,
            cycleDate = null,
            createTimeDate = null,
            editorTimeDate = null,
            excuterSelect = null,
            ActiveLogList = null,
            saveItem = null,
            viewDialog = null,
            projectAuthority = null,
            dialog = null;//页面权限
        var initialize = function(indexModule, options, tabItem) {
            $el = $(tpl);
            _indexModule = indexModule;

            // 事件--点击切换tab后事件回调
            $(tabItem).on("tabActive", function() {
                tabItem.show(true); // 刷新表单
            });

            tab = tabItem;
            createLoading();
            tplId = options.menuId;

            // 业务相关代码
            eventInit();
            this.content = $el;

            // inSelect();
            initDate();
            getProjectAuthority($el);//页面权限
            getMenu(tab, tplId);
        };

        var eventInit = function (){
            //页面除dialog按钮功能
            $el.on('click', '#btnAdd', addProject);
            $el.on('click', '#btnDel', delProject);
            $el.on('click', '#btnExp', expUsers);
            $el.on('click', '#btnExpChecked', expUsers);
            $el.on('click', '.btnSearch', search);
            $el.on('click', '.btnReset', searchRest);
            $el.on('click', '.projectEditBtn', editProject);
            $el.on('click', '.projectDeleteBtn', delProject);
            $('#tabList li.' + tplId).on('click', tabActive);
            $(document).off('click','#isTrue',save);
            $(document).on('click','#isTrue',save);
            $(document).off('click', '#projectActiveLogWrap .t-list li>a', actLogChange);
            $(document).on('click', '#projectActiveLogWrap .t-list li>a', actLogChange);
            $(document).off('click', '.projectActiveBtn', actProjectBtn);
            $(document).on('click', '.projectActiveBtn', actProjectBtn);
            $(document).off('click', '.t-list-title>span.triProject', changeTriProject);
            $(document).on('click', '.t-list-title>span.triProject', changeTriProject);
            $el.on('click', '.changeProStatus', actProjectBtn)
        }

        var tabActive = function() {
            // listInit();
            search();
            getMenu(tab, tplId);   
        }

        var search = function() {
            var data = Form.serialize($('.searchProjectForm', $el));
            data.limit = 10;
            data.page = 1;
            var oIndex = $('.searchProjectForm', $el).attr('pageIndex');
            if(oIndex){
                list.search(data, Number(oIndex));
                $(".listContainer").find("a").removeClass("theSort");
            } else {
                list.search(data);
                $(".listContainer").find("a").removeClass("theSort");
            }
        }

        var searchRest = function(){
            // editorTimeDate.options.min = -365;
            $("input[name=projectName]", $el).val("");
            $("input[name=tagName]", $el).val("");
            $("input[name=cycleTime]", $el).val("");
            $("input[name=createTime]", $el).val("");
            $("input[name=updateTime]", $el).val("");
            // excuterSelect.setValue(0);
            $("#projectExcuter").val("");
            list.search();
            $(".listContainer").find("a").removeClass("theSort");
        }
        //项目经理下拉
        var inSelect = function() {
            Util.ajax.getJson( AjaxPath.project + "/dropdown?modual=user&type=userAccount", {}, function(result, isok){
                excuterSelect = new Select({
                    el:$("#projectExcuter", $el),       //要绑定的容器
                    ajax:{    //所有jquery.ajax的配置项均可配置，这些配置将替换底层组件的配置，<span class="s">慎用</span>
                        method:'GET'
                    }, 
                    label:'项目经理:', //下拉框单元左侧label文本，可不配置
                    selectText:false,       //是否显示  ‘选择|清除’  模式
                    name:'userAccount',    //下拉框单元右侧下拉框名称
                    disabled:false,     //组件是否被禁用
                    topOption:"所有", //设置最顶部option的text属性
                    value:'',//初始选中项设置 默认是按value，如果你想按id设置 也可以 value:[&quot;id&quot;,1],这样设置
                    textField:"value",   //设置下拉框内容，填写数据中对应的字段名
                    valueField:"key",//设置下拉框value，填写数据中对应的字段名
                    datas: result.beans,         //数据源
                    loadAtClick:false,// true--第一次点击时渲染|false或不配置--初始化时渲染
                    dataReady:function(){
                        console.log("获取项目经理");
                    } //select的DOM结构加载完后执行
                    //  url:'../data/select.json'  //数据源，不建议使用，后期将会移除
                });
                // $("#projectManage .sn-select-container").addClass("mt-5");
                // $("#projectExcuter", $el).find('a.sn-select-single>span').html("所有");
                excuterSelect.setValue(0); 
            })
        }

        var initDate = function() {
            cycleDate = new MyDate({
                el:$("#projectCycle", $el),
                inputClassName:'date',
                label:'项目周期:',
                name:'cycleTime',    //开始日期文本框name
                isReadOnly:true,  //项可设置日期输入框是否只读
                min: -30,         //最小日期限制
                range:true,
                type:"date",
                inputPlaceholder:"请选择",
                // defaultValue:"2017-09-20 - 2017-10-24",
                defaultValue:"",
                btns:['clear', 'confirm'],
                done:function(dates,value,endDate){
                } //用户选中日期时执行的回调函数
            });

            createTimeDate = new MyDate({
                el:$("#createTime", $el),
                inputClassName:'date',
                label:'创建时间:',
                name:'createTime',    //开始日期文本框name
                isReadOnly:true,  //项可设置日期输入框是否只读
                // min: -365,         //最小日期限制
                // max: 0,
                range:true,
                type:"date",
                inputPlaceholder:"请选择",
                // defaultValue:"2017-09-20 - 2017-10-24",
                defaultValue:"",
                btns:['clear', 'now', 'confirm'],
                done: function(dates,value,startDate){
                    // editorTimeDate.options.min = dates; //设置结束日期的最小限制
                },
                clearFunc:function(){
                    // editorTimeDate.options.min = -365;
                }
            });

            editorTimeDate = new MyDate({
                el:$("#editorTime", $el),
                inputClassName:'date',
                label:'更新时间:',
                name:'updateTime',    //开始日期文本框name
                isReadOnly:true,  //项可设置日期输入框是否只读
                // min: -365,         //最小日期限制
                // max: 0,
                range:true,
                type:"date",
                inputPlaceholder:"请选择",
                // defaultValue:"2017-09-20 - 2017-10-24",
                defaultValue:"",
                btns:['clear', 'now', 'confirm'],
                done:function(dates,value,endDate){
                } //用户选中日期时执行的回调函数
            });
        }

        var addProject = function(e) {
            tab.createTab({
                title: '新增项目',
                closeable: 1, //是否可以关闭 0false不可以|1true可以
                className: 'addProjectTab'
            });
            tab.switchTab('新增项目');
            var projectdata = {};
            projectdata.menuId = tplId;
            require(['js/project/addProject'], function(addProjectContent) {
                var result = new addProjectContent({}, projectdata, tab);
                tab.content(result.content);
            });
            
        }

        var editProject = function(e, index){
            // console.log(e.currentTarget.parentNode.parentNode.rowIndex);
            
            if(!index && index!==0){
                $(".listContainer .sn-list-content-locker.sn-list-show table tbody tr.selected td").click();
                $(".listContainer .sn-list-show table tbody tr").eq(e.currentTarget.parentNode.parentNode.parentNode.rowIndex).find('td').click();
            }else{
                $(".listContainer .sn-list-content-locker.sn-list-show table tbody tr.selected td").click();
                $(".listContainer .sn-list-show table tbody tr").eq(index).find('td').click();
            }

            var datas = list.getCheckedRows();
            // console.log(datas);

            if(datas.length === 0 || datas.length > 1) {
                config = {
                    mode: 'tips',
                    content: '<div style="text-align:center;margin-top:70px">请选择一条数据进行修改！</div>',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false
                };
                var dialog = new Dialog(config);
            }else {
                //列表页选中第几页，修改跳转后回来保存，但新建会出问题
                // $('.searchProjectForm', $el).attr('pageIndex', list.pageIndex);
                tab.createTab({
                    title: '修改项目',
                    closeable: 1, //是否可以关闭 0false不可以|1true可以
                    className: 'editProjectTab'
                });
                tab.switchTab('修改项目');
                var projectdata = datas[0];

                var positiondata = datas[0];
                // positiondata.orgId=selectdata.id;
                // positiondata.orgName=selectdata.name;
                projectdata.menuId = tplId;
                require(['js/project/editProject'], function(projectEditContent) {
                    var result = new projectEditContent({}, projectdata, tab);
                    tab.content(result.content);
                });
            }
        }

        var listInit = function (){
            var config = {
                el: $('.listContainer', $el),
                ajax:{    //所有jquery.ajax的配置项均可配置，这些配置将替换底层组件的配置；慎用
                    method:'GET'
                },
                field: {
                    boxType: 'checkbox',
                    key: 'id',
                    items: [
                    {
                        text: '项目名称',
                        title: 'projectName',
                        name: 'projectName',
                        className: 'w90',
                        sorting:1,
                        width:200,
                        click: function (e, val, item) {
                            // var codeNum=GetQueryString('code');
                            // var systemIdStr=GetQueryString('systemid');
                            // var objBox ={
                            //     code : codeNum,
                            //     systemid: systemIdStr
                            // };
                            // Util.ajax.postJson(AjaxPath+"http://192.168.1.108:8089/devops-auth/login/check", objBox, function(result, isok) {
                            // Util.ajax.postJson("http://192.168.1.108:8089/devops-auth/login/check", objBox, function(result, isok) {
                            //     是管理员或产品经理 ? isShow = true : isShow = false;
                                handLoading = new Loading(loadingConfig);
                                creatDialog(e, item);
                                handLoading.destroy();
                                // if(result.token != 管理员){
                                //     //如果不是系统管理员修改按钮不可见
                                //     $("button.ui-dialog-autofocus").css({'display':'none'})
                                // }
                                
                                // setTimeout(function(){ $('#isTrue').on('click',save); },100)
                                // $('#isTrue').on('click',save);
                            // });
                        },
                        render: function (item, val) {
                            val = $('<span/>').text( val ).html(); 
                            val = val.replace(/\s/g, '&nbsp;');
                            return '<a href="javascript:;" class="text-overflow" style="line-height:36px;display:block;outline:none">' + val + '</a>';
                        }
                    },
                    {
                        text: '项目标识',
                        title: 'tagName',
                        name: 'tagName',
                        className: 'w90',
                        sorting:1,
                        width:150,
                        click: function (e, val,item) {
                            handLoading = new Loading(loadingConfig);
                            creatDialog(e, item);
                            handLoading.destroy();
                            // setTimeout(function(){ $('#isTrue').on('click',save); },100);
                            // $('#isTrue').on('click',save);
                        },
                        render: function (item, val) {
                            return '<a href="javascript:;" class="text-overflow" style="line-height:36px;display:block;outline:none">' + val + '</a>';
                        }
                    },
                    {
                        text: '开始时间',
                        title: 'startTime',
                        name: 'startTime',
                        className: 'w90',
                        sorting:1,
                        width:130,
                        render: function (item, val) {
                            return val;
                        }
                    },
                    /*{
                        text: '结束时间',
                        title: 'endTime',
                        name: 'endTime',
                        className: 'w90',
                        width:130,
                        sorting:1
                    },
                    {
                        text: '创建时间',
                        name: 'createTime',
                        className: 'w90',
                        sorting:1,
                        width:150,
                        render: function (item, val) {
                            return new Date(val).Format("yyyy-MM-dd hh:mm:ss");
                        }
                    },
                    {
                        text: '更新时间',
                        name: 'updateTime',
                        className: 'w90',
                        width:150,
                        sorting:1,
                        render: function (item, val) {
                            if(val){
                                return new Date(val).Format("yyyy-MM-dd hh:mm:ss");
                            }
                        }
                    },*/
                    {
                        text: '状态',
                        name: 'projectStatusName',
                        className: 'w90',
                        sorting:1,
                        width:130
                    },
                    {
                        text: '项目经理',
                        title: 'userName',
                        name: 'userName',
                        className: 'w120',
                        width:130,
                        sorting:1
                    },
                    /*{
                        text: '需求负责人',
                        title: 'requireLeaderName',
                        name: 'requireLeaderName',
                        className: 'w120',
                        width:150,
                        sorting:1
                    },
                    {
                        text: '开发负责人',
                        title:'developLeaderName',
                        name: 'developLeaderName',
                        className: 'w120',
                        width:150,
                        sorting:1
                    }
                    ,
                    {
                        text: '测试负责人',
                        title: 'testLeaderName',
                        name: 'testLeaderName',
                        className: 'w120',
                        width:150,
                        sorting:1
                    },*/
                    {
                        text: '操作',
                        title: '',
                        name: '',
                        // width:130,
                        className: 'w90',
                        click: function (e, val, item) {
                            // console.log(val,item);
                        },
                        render: function (item, val) {
                            var str = '<div class="fn-right">';
                            if(item.flowActions){
                                for(var i = 0; i < item.flowActions.length; i++ ){
                                    if(item.flowActions[i].description === ""){
                                        item.flowActions[i].description = "&nbsp;";
                                    }
                                    str += '<button class="t-btn t-btn-blue t-btn-xs changeProStatus" style="margin-right:2px" odata="'+item.flowActions[i].toValue+'" proId="'+item.id+'"><a style="color:#fff">'+item.flowActions[i].description+'</a></button>';
                                }
                            }
                            if(projectAuthority){
                                return str + '<button class="ml-5 t-btn t-btn-blue t-btn-xs projectEditBtn" style="margin-right:2px;"><a style="color:#fff">修改</a></button><button class="t-btn t-btn-blue t-btn-xs projectDeleteBtn"><a style="color:#fff">删除</a></button></div>';
                            } else {
                                return '<div class="fn-center">您没有权限操作该项!</div>';
                            }
                        }
                    }]
                },
                page: {
                    customPages: [2, 3, 5, 10, 15, 20, 30, 50], //可选择每页显示多少条
                    perPage: 10, //默认每页显示多少条记录
                    total: true
                },
                data: {
                    url: AjaxPath.project + "/projects"
                    // url:"http://192.168.91.172:8089/devops-project/projects?httpToken=devopsuseracount"
                    // url:"../../../data/list1.json"
                }
            };
            list = new List(config);
            list.search();
        }
 
        var creatDialog = function(e, item){
            Util.ajax.getJson(AjaxPath.project + "/projects/" + item.data.id, {}, function(result, isok) {
            // Util.ajax.getJson(AjaxPath.project + "/projects/" + item.data.id +"?httpToken=devopsuseracount", {}, function(result, isok) {
                if(result.returnCode === "0000"){
                    Util.ajax.getJson(AjaxPath.auth + '/authority/button/'+$cookie.get("userId")+'?datas=[{"mo":"4","btnId":""}]',{},function(json,status){
                        item.oMemo = result.beans.project.memo;
                        if(json.beans[0].mo === 1){
                            item.proFlag = true;
                            saveItem = item;
                            var config = {
                                mode: 'normal', //对话框模式，默认normal标准|tips浮动层|confirm确认对话框
                                delayRmove: "", //延迟删除秒数设定 tips默认3秒,非tips默认不关闭。
                                title: item.data.projectName+'项目信息', //对话框标题，
                                content: Util.hdb.compile(tabelTpl)(item), //对话框内容，可以是字符串、html代码段,tpl对象。默认为loading状态（由点组成的圈。大段代码建议使用 tpl。
                                ok: function() { 
                                    editProject(e, e.currentTarget.parentNode.rowIndex);
                                    return true;
                                }, 
                                cancel: function() { 
                                    var data = Form.serialize($('.searchProjectForm', $el));
                                    data.limit = 10;
                                    data.page = 1;
                                    list.search(data,Number(list.pageIndex));
                                    $(".listContainer").find("a").removeClass("theSort");
                                    return true;
                                },
                                cancelValue: '修改', //取消按钮的文本 默认是 ‘关闭’
                                okValue: '修改', //取消按钮的文本 默认是 ‘关闭’
                                cancelDisplay: false, //是否显示取消按钮 默认true显示|false不显示
                                width: 920, //对话框宽度，normal默认值为600，confirm默认值为300，tips默认值为240
                                height: parseInt($(".sn-tab.J_tab_render").height()-120), //对话框高度，normal默认值为400，confirm默认值为180，tips默认值为80
                                padding:'0 16px 1em 10px',//(默认值: 继承 css 文件设置) 设置消息内容与消息容器的填充边距，即 style padding属性
                                skin: 'dialogSkin dialogSkin2',//设置对话框额外的className参数,多个className请使用空格隔开。
                                modal: true //是否开启模态框状态  默认false不开启|true开启,confirm默认状态为true
                            };
                        } else {
                            item.proFlag = false;
                            saveItem = item;
                            var config = {
                                mode: 'normal', //对话框模式，默认normal标准|tips浮动层|confirm确认对话框
                                delayRmove: "", //延迟删除秒数设定 tips默认3秒,非tips默认不关闭。
                                title: item.data.projectName+'项目信息', //对话框标题，
                                content: Util.hdb.compile(tabelTpl)(item), //对话框内容，可以是字符串、html代码段,tpl对象。默认为loading状态（由点组成的圈。大段代码建议使用 tpl。
                                cancel: function() { 
                                    var data = Form.serialize($('.searchProjectForm', $el));
                                    data.limit = 10;
                                    data.page = 1;
                                    list.search(data,Number(list.pageIndex));
                                    $(".listContainer").find("a").removeClass("theSort");
                                    return true;
                                },
                                cancelValue: '取消', //取消按钮的文本 默认是 ‘关闭’
                                cancelDisplay: true, //是否显示取消按钮 默认true显示|false不显示
                                width: 920, //对话框宽度，normal默认值为600，confirm默认值为300，tips默认值为240
                                height: parseInt($(".sn-tab.J_tab_render").height()-120), //对话框高度，normal默认值为400，confirm默认值为180，tips默认值为80
                                padding:'0 16px 1em 10px',//(默认值: 继承 css 文件设置) 设置消息内容与消息容器的填充边距，即 style padding属性
                                skin: 'dialogSkin dialogSkin2',//设置对话框额外的className参数,多个className请使用空格隔开。
                                modal: true //是否开启模态框状态  默认false不开启|true开启,confirm默认状态为true
                            };
                        }
                        viewDialog = new Dialog(config); 
                        creatSelect(item);
                        $("#isTrue").prev().val(item.data.spacekey);
                        $("input[name='sapcekeyPro']").on("keypress",function(e){
                            if(e.keyCode === 13){
                                e.preventDefault();
                            }
                        });
                        //查看项目弹窗的获取活动按钮
                        var str = "";
                        for( var i = 0;i < result.beans.project.flowActions.length; i++ ){
                            if(result.beans.project.flowActions[i].description === ""){
                                result.beans.project.flowActions[i].description = "&nbsp;";
                            }
                            str += '<a href="javascript:;" class="mr-10 t-btn t-btn-white projectActiveBtn" odata="'+result.beans.project.flowActions[i].toValue+'">'+result.beans.project.flowActions[i].description+'</a>';
                        }
                        $("#activeProjectBtns").html(str);
                        //活动日志列表
                        crtActlogList(item);
                    });
                } else {
                    new Dialog({
                        mode: 'tips',
                        content: '<div style="text-align:center;margin-top:70px">'+result.returnMessage+'</div>',
                        width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                        height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                        cancelDisplay: false
                    });
                }          
            });
           
            
        }

        var creatSelect = function(item){
            Util.ajax.getJson(AjaxPath.project +"/dropdown?modual=inventory&type=inventoryType&inventoryType=13", {}, function(result, isok) {
                var config = {
                    el:$("#confluenceServerDrop"),       //要绑定的容器
                    ajax:{    //所有jquery.ajax的配置项均可配置，这些配置将替换底层组件的配置，<span class="s">慎用</span>
                        method:'GET'
                    },
                    selectText:false,       //是否显示  ‘选择|清除’  模式
                    name:'inventoryId',    //下拉框单元右侧下拉框名称
                    disabled:false,     //组件是否被禁用
                    topOption:"请选择", //设置最顶部option的text属性
                    value:'',//初始选中项设置 默认是按value，如果你想按id设置 也可以 value:[&quot;id&quot;,1],这样设置
                    textField:"value",   //设置下拉框内容，填写数据中对应的字段名
                    valueField:"key",//设置下拉框value，填写数据中对应的字段名
                    datas: result.beans,         //数据源
                    loadAtClick:false,// true--第一次点击时渲染|false或不配置--初始化时渲染
                    zIndex:2000 
                    /*dataReady:function(){
                        console.log(23423432)
                    }, //select的DOM结构加载完后执行*/
                    // url:'../../data/select.json'  //数据源，不建议使用，后期将会移除
                };
                selectDrop = new Select(config);
                if(item.data.inventoryId === null || item.data.inventoryId === undefined){
                    selectDrop.setValue(0);
                }else {
                    selectDrop.setValue('"'+item.data.inventoryId+'"');
                }
                 
            });
        }

        var expUsers = function(e) {
            var arr = list.getCheckedRows(),newArr=[],str;
            for(var i = 0; i < arr.length; i++ ){
                newArr.push(arr[i].id);
            }
            var data = Form.serialize($('.searchProjectForm', $el));
            if(e.currentTarget.id === "btnExpChecked" && arr.length<1){
                new Dialog({
                    mode: 'tips',
                    content: '<div style="text-align:center;margin-top:70px">请选择至少一条数据进行导出！</div>',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false
                });
            } else if(e.currentTarget.id === "btnExp"){
                window.location.href = AjaxPath.project + "/projects/export?createTime=" + data.createTime + "&cycleTime=" + data.cycleTime +"&updateTime="+data.updateTime+"&projectName="+data.projectName+"&tagName="+data.tagName+"&userAccount="+data.userAccount+"&ids=";
            } else {
                window.location.href = AjaxPath.project + "/projects/export?createTime=" + data.createTime + "&cycleTime=" + data.cycleTime +"&updateTime="+data.updateTime+"&projectName="+data.projectName+"&tagName="+data.tagName+"&userAccount="+data.userAccount+"&ids="+newArr.toString();
            }
            // window.location.href = AjaxPath + "/projects/export";
        }
        
        var delProject = function(e){
            
            if(e.currentTarget.id!=="btnDel"){
                $(".listContainer .sn-list-content-locker.sn-list-show table tbody tr.selected td").click();
                $(".listContainer .sn-list-show table tbody tr").eq(e.currentTarget.parentNode.parentNode.parentNode.rowIndex).find('td').click();
            }

            handLoading = new Loading(loadingConfig);
            var nodes = list.getCheckedRows();
            if(nodes.length < 1) {
                handLoading.destroy();
                config = {
                    mode: 'tips',
                    content: '<div style="text-align:center;margin-top:70px">请选择至少一条数据进行删除！</div>',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false
                };
                var dialog = new Dialog(config);
            } else {
                var data = [];
                for(var i = 0; i < nodes.length; i++) {
                    var obj = new Object();
                    obj.id = list.getCheckedRows()[i].id;
                    // obj.orgId = list.getCheckedRows()[i].orgId;
                    // obj.projectName = list.getCheckedRows()[i].projectName;
                    data.push(obj);
                }
                var content = "";
                for(var k = 0; k < data.length; k++) {
                    content = content + data[k].projectName + ",";
                }
                var str = JSON.stringify(data);
                delDialogBox(content, nodes, data, str);
            }    
        }

        var delDialogBox = function(content, nodes, data, str) {
            handLoading.destroy();
            var config = {
                mode: 'confirm', //对话框模式，默认normal标准|tips浮动层|confirm确认对话框
                title: "删除提示", //对话框标题
                content: '<div style="text-align:center;margin-top:50px">确认删除选择的项目？</div>' /* + content.substring(0,content.length-1)*/ , //对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                ok: function() {
                    handLoading = new Loading(loadingConfig);
                    deleteProject(nodes, data, str);
                    return true;
                }, // 配置该项时才会出现ok按钮，回调函数可为空。如果指定 return false 则执行完方法后不关闭对话框。默认 return true
                okValue: '确定', //确定按钮的文本 默认是 ‘ok’
                cancel: function() {}, //取消按钮的回调函数,配置该项时才会出现关闭按钮，回调函数可为空。
                cancelValue: '取消', //取消按钮的文本 默认是 ‘关闭’
                cancelDisplay: true, //是否显示取消按钮 默认true显示|false不显示
                width: 300, //对话框宽度，normal默认值为600，confirm默认值为300，tips默认值为240
                height: 120, //对话框高度，normal默认值为400，confirm默认值为180，tips默认值为80
                padding: '0 16px 1em 10px', //(默认值: 继承 css 文件设置) 设置消息内容与消息容器的填充边距，即 style padding属性
                align: 'bottom right', //设置对话框与其他元素的对齐方式。仅在show(elem)与showModal(elem)传入元素时生效。默认值: "bottom left"。可选："top left" "top" "top right" "right top" "right" "right bottom" "bottom right" "bottom" "bottom left" "left bottom" "left" "left top"。
                skin: 'dialogSkin dialogSkin2', //设置对话框额外的className参数,多个className请使用空格隔开。
                fixed: true, //是否开启固定定位 默认false不开启|true开启
                quickClose: false, //点击空白处快速关闭 默认false不关闭|true关闭
                modal: true, //是否开启模态框状态  默认false不开启|true开启,confirm默认状态为true
                beforeOpen: function() {}, //对话框打开之前执行。
                zIndex: 990 // 对话框的z-index值，默认是1024。
            };
            var delDialog = new Dialog(config)
        };

        var deleteProject = function(nodes, data, str) {
            if(data.length===1) {
                Util.ajax.getJson(AjaxPath.project +"/projects/delete/"+nodes[0].id, {}, function(result, isok) {
                    var flag = result.returnMessage;
                    if(undefined === flag) {
                        handLoading.destroy();
                        new Dialog({
                            mode: 'confirm', //对话框模式，默认normal标准|tips浮动层|tips确认对话框
                            title: '提示', //对话框标题
                            width: 300,
                            height: 120,
                            modal: true,
                            content: '<div style="text-align:center;margin-top:50px">与服务器通讯失败，请检查网络！</div>', //对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                            cancelDisplay: false,
                            ok: function() {}, // 配置该项时才会出现ok按钮，回调函数可为空。如果指定 return false 则执行完方法后不关闭对话框。默认 return true
                            okValue: '关闭' //确定按钮的文本 默认是 ‘ok’
                        });
                        return;
                    } else {
                        handLoading.destroy();
                        new Dialog({
                            mode: 'tips',
                            content: '<div style="text-align:center;margin-top:70px">'+ result.returnMessage +'</div>',
                            width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                            height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                            cancelDisplay: false
                        });
                        if(result.returnCode==="0000"){
                            search();
                        }
                    }
                })
            }
            else {
                Util.ajax.postJson(AjaxPath.project + "/projects/batchDelete", str, function(result, isok) {
                    var flag = result.returnMessage;
                    if(undefined === flag) {
                        handLoading.destroy();
                        new Dialog({
                            mode: 'confirm', //对话框模式，默认normal标准|tips浮动层|tips确认对话框
                            title: '提示', //对话框标题
                            width: 300,
                            height: 120,
                            modal: true,
                            content: '<div style="text-align:center;margin-top:50px">与服务器通讯失败，请检查网络！</div>', //对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                            cancelDisplay: false,
                            ok: function() {}, // 配置该项时才会出现ok按钮，回调函数可为空。如果指定 return false 则执行完方法后不关闭对话框。默认 return true
                            okValue: '关闭' //确定按钮的文本 默认是 ‘ok’
                        });
                        return;
                    } else {
                        handLoading.destroy();
                        new Dialog({
                            mode: 'tips',
                            content: '<div style="text-align:center;margin-top:70px">'+ result.returnMessage +'</div>',
                            width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                            height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                            cancelDisplay: false
                        });
                        if(result.returnCode==="0000"){
                            search();
                        }
                    }
                })
            }
        }

        var createLoading = function() {
            loadingConfig = {
                el: 'body', //组件要绑定的容器，默认为body（此项可不配置或留空）
                className: 'loading', //组件外围的className
                position: 'center', //提示信息位置，顶部top|默认center中央
                width: '300', //loading的宽度,非必须，默认300
                height: 'auto', //loading的宽度,非必须，默认auto
                mask: 1, //是否显示遮罩， 0不显示|默认1显示
                animate: 1, //是否显示动画效果， 0不显示|默认1显示
                mode: 'layer', //展示方式 loadingLine线条方式|默认layer弹层方式
                text: '加载中...', //提示文字，默认 加载中...
                icon: 'dotCycle', //文字前面的gif动画， 默认dotCycle有点组成的圈|cmcc移动图标|cmccLarge大的移动图标
            }
        }

        var save = function(){
            // console.log(11111,$("#isTrue").prev().val());
            // console.log(22222,$("#confluenceServerDrop").find("select").val())
            // console.log(33333,$("#projectTagName").attr("projectId"));
            // console.log(44444,$("input[name=id]").attr("inventoryId"));
            // console.log(55555,$("input[name=id]").val())
            // console.log(99999,selectDrop.getSelected().key)
            var oId = $("input[name=id]").val();
            var oInput = $("#isTrue").prev().val();
            var oSelect = $("#confluenceServerDrop").find("select").val();
            var inventory_id = $("input[name=id]").attr("inventoryId");
            if(oSelect === ""){
                new Dialog({
                    mode: 'tips',
                    content: '<div style="text-align:center;margin-top:70px">请选择Confluence空间服务器!</div>',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false
                });
                return false;
            }else if(oInput === ""){
                new Dialog({
                    mode: 'tips',
                    content: '<div style="text-align:center;margin-top:70px">空间key不能为空!</div>',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false
                });
                return false;
            }
            if(inventory_id && oSelect){
                //空间服务器存在
                Util.ajax.getJson(AjaxPath.project+"/confluence/updateSpace/"+oId+"/"+selectDrop.getSelected().key+"/"+inventory_id+"/"+oInput, {}, function(result, isok){
                // Util.ajax.getJson("http://192.168.1.102:8089/devops-project/confluence/updateSpace/"+oId+"/"+selectDrop.getSelected().key+"/"+inventory_id+"/"+oInput, {}, function(result, isok){
                    if(result.returnCode === "0000"){
                        viewDialog.remove();
                        var config = {
                            // title: '标题', //弹窗标题，
                            content: '<div style="text-align:center;margin-top:70px">'+result.returnMessage+'</div>', //弹窗内容，可以是字符串、html代码段,tpl对象。默认为loading状态（由点组成的圈。大段代码建议使用 tpl。
                            ok: function() {
                                var data = Form.serialize($('.searchProjectForm', $el));
                                data.limit = 10;
                                data.page = 1;
                                list.search(data,Number(list.pageIndex));
                                $(".listContainer").find("a").removeClass("theSort");
                            },
                            okValue: '确&nbsp;&nbsp;定', //确定按钮的文本 默认是 ‘ok’
                            cancel: function() {},
                            cancelValue: '取&nbsp;&nbsp;消', //取消按钮的文本 默认是 ‘关闭’
                            cancelDisplay: false,
                            modal: true ,
                            width: 300, 
                            height: 150
                        }
                        var dialog = new Dialog(config);
                    }else {
                        new Dialog({
                            mode: 'tips',
                            content: '<div style="text-align:center;margin-top:70px">'+result.returnMessage+'</div>',
                            width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                            height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                            cancelDisplay: false
                        });
                        return false;
                    }
                });
            } else if( !inventory_id ) {
                //创建空间服务器
                
                var obj = {
                    projectId:oId,
                    inventoryId: selectDrop.getSelected().key,
                    spacekey : oInput
                };
                Util.ajax.postJson(AjaxPath.project+"/confluence/createSpace", obj, function(result, isok){
                // Util.ajax.postJson("http://192.168.1.102:8089/devops-project/confluence/createSpace", obj, function(result, isok){
                    if(result.returnCode === "0000"){
                        viewDialog.remove();
                        var config = {
                            // title: '标题', //弹窗标题，
                            content: '<div style="text-align:center;margin-top:70px">'+result.returnMessage+'</div>', //弹窗内容，可以是字符串、html代码段,tpl对象。默认为loading状态（由点组成的圈。大段代码建议使用 tpl。
                            ok: function() {
                                var data = Form.serialize($('.searchProjectForm', $el));
                                data.limit = 10;
                                data.page = 1;
                                list.search(data,Number(list.pageIndex));
                                $(".listContainer").find("a").removeClass("theSort");
                            },
                            okValue: '确&nbsp;&nbsp;定', //确定按钮的文本 默认是 ‘ok’
                            cancel: function() {},
                            cancelValue: '取&nbsp;&nbsp;消', //取消按钮的文本 默认是 ‘关闭’
                            cancelDisplay: false,
                            modal: true ,
                            width: 300, 
                            height: 150
                        }
                        var dialog = new Dialog(config);
                        if(result.returnCode === "0000") $("input[name=id]").attr("inventoryId",result.beans.inventoryId);
                    }else {
                         new Dialog({
                            mode: 'tips',
                            content: '<div style="text-align:center;margin-top:70px">'+result.returnMessage+'</div>',
                            width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                            height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                            cancelDisplay: false
                        });
                        return false;
                    }
                    
                });

            }           
        }
        //页面元素级权限验证
        var getProjectAuthority = function($el){
            require(['js/btnAuthority'], function(oAuthority){
                new oAuthority($el);
            });
            Util.ajax.getJson(AjaxPath.auth + '/authority/button/'+ $cookie.get("userId") +'?datas=[{"mo":"3","btnId":""}]', {}, function(result, json){
                if(result.returnCode==="0000"){
                    if(result.beans[0].mo === 0){
                        projectAuthority = false;
                    }else {
                        projectAuthority = true;
                    }
                    listInit();
                }
            });
        }

        //活动日志列表
        var crtActlogList = function (itemPro){
            var config = {
                el: $('#projectActiveLog'),
                ajax:{    //所有jquery.ajax的配置项均可配置，这些配置将替换底层组件的配置；慎用
                    method:'GET'
                },
                field: {
                    boxType: 'radio',
                    key: 'id',
                    items: [
                    {
                        text: 'createrName',
                        name: 'createrName',
                        width: 100
                    },
                    {
                        text: '记录',
                        name: 'content',
                        width: 400,
                        className: 'text-break',
                        render: function (item, val) {
                            var str = "";
                            str += '<div class="fn-left">于&nbsp;&nbsp;' + new Date(item.createTime).Format('yyyy-MM-dd hh:mm:ss') + '&nbsp;&nbsp;' + item.typeName + '了&nbsp;&nbsp;' + item.businessType + '：' + '<a href="javascript:;" data="'+ item.businessId +'" class="">'+ item.businessTitle +'</a>' + item.content +'</div>';
                            return str;
                        }
                    }]
                },
                page: {
                    customPages: [2, 3, 5, 10, 15, 20, 30, 50], //可选择每页显示多少条
                    perPage: 5, //默认每页显示多少条记录
                    total: true
                },
                data: {
                    // url: AjaxPath.project + "/projects"
                    // url:"http://192.168.91.172:8089/devops-project/projects?httpToken=devopsuseracount"
                    url: AjaxPath.project + "/logInfo/query?businessId="+itemPro.data.id+"&businessType=project"
                    // url:"../../../data/list1.json"
                }
            };
            ActiveLogList = new List(config);
            ActiveLogList.search();
            $("#projectActiveLog").find("a").removeClass("theSort");
            ActiveLogList.on('success',function(result){
                $(".ui-dialog-grid .sn-list-header").hide();
            });
        }
        //点击切换列表隐藏
        var changeTriProject = function (){
            $(this).toggleClass("tri-down").toggleClass("tri-left");
            $("#projectActiveLogWrap").slideToggle();
            if($(this).attr("class") === "triProject tri-down"){
                var liData = $("#projectActiveLogWrap .t-list li.actived a").attr("odata");
                $("#projectActiveLog").find("a").removeClass("theSort");
                ActiveLogList.search({
                    type:liData
                }, Number($(this).attr("odata")));
            };
            if($(this).attr("class") === "triProject tri-left"){
                $(this).attr("odata", ActiveLogList.pageIndex );
            }
        }
        //点击所有等激活样式时 刷新底部列表
        var actLogChange = function(){
            var logdata = null;
            $("#projectActiveLogWrap .t-list li").removeClass("actived");
            $(this).parent().addClass("actived");
            logdata = {
                type : $(this).attr("odata")
            };
            ActiveLogList.search(logdata);
        }


        //活动按钮的功能, 赋回新的按钮并绑定此功能
        var actProjectBtn = function(e){
            var _proStatus = $(this).attr("odata");
            if(e.currentTarget.className === "t-btn t-btn-blue t-btn-xs changeProStatus"){
                Util.ajax.postJson(AjaxPath.project + "/projects/updateStatus?id="+$(this).attr("proId")+"&value="+_proStatus+"&userId="+$cookie.get("userId"), {}, function(result, isok) {
                    search();
                });
            }else {
                Util.ajax.postJson(AjaxPath.project + "/projects/updateStatus?id="+saveItem.data.id+"&value="+_proStatus+"&userId="+$cookie.get("userId"), {}, function(result, isok) {
                    if (result.returnCode==="0000") {
                        dialog = new Dialog({
                            mode: 'confirm', // 对话框模式，默认normal标准|confirm浮动层|confirm确认对话框
                            title:'提示',
                            width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                            height: 120, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                            cancelDisplay: false, //是否显示取消按钮（强制执行，可在confirm模式下生效），可选项。 默认true(显示)
                            modal:true,
                            content: '<div style="text-align:center;margin-top:50px">修改状态成功</div>' ,// 对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                        });
                        dialog.on('onclose',function(){
                            //重新渲染对话框的模板
                            saveItem.data = result.beans.project;
                            $(".ui-dialog-content").html( Util.hdb.compile(tabelTpl)(saveItem) );
                            //渲染活动的按钮
                            var str = "";
                            if(result.beans.project.flowActions === null){
                                result.beans.project.flowActions = [];
                            }
                            for( var i = 0;i < result.beans.project.flowActions.length; i++ ){
                                if(result.beans.project.flowActions[i].description === ""){
                                    result.beans.project.flowActions[i].description = "&nbsp;";
                                }
                                str += '<a href="javascript:;" class="mr-10 t-btn t-btn-white projectActiveBtn" odata="'+result.beans.project.flowActions[i].toValue+'">'+result.beans.project.flowActions[i].description+'</a>';
                            }
                            $("#activeProjectBtns").html(str);
                            //渲染空间服务器下拉框
                            creatSelect(saveItem);
                            $("#isTrue").prev().val(saveItem.data.spacekey);
                            $("input[name='sapcekeyPro']").on("keypress",function(e){
                                if(e.keyCode === 13){
                                    e.preventDefault();
                                }
                            });
                            //渲染列表
                            crtActlogList(saveItem);
                        });
                    } else {
                        dialog = new Dialog({
                            mode: 'confirm', // 对话框模式，默认normal标准|confirm浮动层|confirm确认对话框
                            title:'提示',
                            width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                            height: 120, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                            cancelDisplay: false, //是否显示取消按钮（强制执行，可在confirm模式下生效），可选项。 默认true(显示)
                            modal:true,
                            content: '<div style="text-align:center;margin-top:50px">'+result.returnMessage+'</div>' ,// 对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                        });
                    }
                });
            }
            
        }
        return initialize;
    });